package com.framework.service;

import com.baomidou.mybatisplus.service.IService;
import com.framework.entity.aliPay.AliPayConfig;
import com.framework.entity.sys.SysAddress;
import com.framework.entity.tran.TranOrder;
import com.framework.page.PageUtils;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**订单
 * @author wq
 */
public interface TranOrderService extends IService<TranOrder> {
    /**
     *订单列表
     * @param token
     * @param orderState
     * @return
     */
    List<TranOrder> queryOrdersList(String token, Integer orderState);

    /**
     *物流信息
     * @param token
     * @param orderNo
     * @return
     */
    Map<String, Object> queryLogistics(String token, String orderNo);

    /**
     *根据订单号获取订单
     * @param orderNo
     * @return
     */
    TranOrder queryOrdersByNo(String orderNo);

    /**
     *添加订单
     * @param token
     * @param goodsId
     * @param goodsNumber
     * @param goodsPrice
     * @return
     */
    String addOrder(String token, Long goodsId, Integer goodsNumber, BigDecimal goodsPrice);

    /**
     * 取消订单
     * @param token
     * @param orderNo
     */
    void cancelOrders(String token, String orderNo);

    /**
     * 签收
     * @param token
     * @param orderNo
     */
    void signOrders(String token, String orderNo);

    /**
     * 添加
     * @param orderNo
     * @param goodsNumber
     * @param goodsPrice
     * @param agentId
     * @param addressId
     * @param goodsId
     */
    void insertOrders(String orderNo, Integer goodsNumber, BigDecimal goodsPrice, Long agentId, String addressId, Long goodsId);

    /**
     * 订单详情
     * @param orderNo
     * @return
     */
    Map<String, Object> queryOrderInfo(String orderNo);

    /**
     *  查询团队购买机器数量
     * @param agentId
     * @param type
     * @param isOwn
     * @return
     */
    Integer queryByTerminalCount(Long agentId, Integer type, int isOwn);

    /**
     * 删除
     * @param token
     * @param orderNo
     */
    void deleteOrder(String token, String orderNo);

    /**
     * 支付
     * @param token
     * @param orderNo
     * @param payType
     * @param password
     * @return
     */
    String pay(String token, String orderNo , Integer payType,String password);

    /**
     * 回调接收
     * @param orderNo
     * @param aliPayType
     */
    void successPayState(String orderNo, String aliPayType);

    /**
     * 推送信息
     * @param order
     */
    void pushMessage(TranOrder order);

    /**
     * 分页查询
     * @param params
     * @return
     */
    PageUtils queryList(Map<String, Object> params);

    /**
     * 处理订单
     * @param params
     */
    void handleOrder(Map<String, Object> params);

    /**
     * 根据订单id查询地址
     * @param orderId
     * @return
     */
    SysAddress queryAddressByOrderId(String orderId);

    /**
     * 订单详情
     * @param orderId
     * @return
     */
    Map<String, Object> queryNoticeDetail(Long orderId);

    AliPayConfig queryAliPayConfig(Long deptId);


    List<Map<String, Object>> queryOrderListByAgentIdAndGoodsId(Long agentId, Long goodsId);

    void payByIntegral(String token, Long goodsId, Integer totalIntegral, Integer goodsNum);

    List<TranOrder> getIntegralOrders(String token, Integer orderState);

}
